在我的扩展程序中,我试图确定一个新选项卡是否是由另一个选项卡作为弹出窗口创建的,如果是,是哪个选项卡。我想我可以使用内容脚本中的window.opener来帮助解决这个问题。但看起来window.opener在内容脚本中无法正常工作。当我手动创建一个选项卡时,它的window.opener正如预期的那样为null。当一个选项卡被另一个选项卡创建为弹出窗口时,它的window.opener是未定义的。我可以由此推断该选项卡是作为弹出窗口创建的,但我无法使用它来确定哪个选项卡创建了新选项卡。这是一个已知问题吗?有人知道任何解决方法吗? 最佳答案
我的Chrome扩展有一个contentscript使用以下代码将HTML注入(inject)页面:varoptionsUrl=chrome.extension.getURL("src/options/options.html");varcontent='Options';这会产生:Options当我单击该链接时,它会打开一个新的浏览器选项卡仅此而已。如果我将href属性chrome-extension://gdocgfhmbfbbbmhnhmmejncjdcbjkhfc/src/options/options.html粘贴到地址栏中,我会看到我的Chrome扩展程序的选项页面正确显示
我在这里的第一篇文章=]。我正在构建一个chrome扩展,我正在递归地使用setTimeout。我注意到,如果我将它设置为最多13秒,它会起作用,但如果我将它设置为14秒以上,它就不起作用。这是我的background.js中的示例functionstart(){vartimeout=setTimeout(function(){start();},1000*15);alert('test');}chrome.webNavigation.onCompleted.addListener(function(o){start();},{url:[{urlContains:'http://www
我正在构建一个Firefox扩展,可以将HTML元素添加到网站的某些页面。我想让它插入一个自定义CSS文件来设置这些元素的样式。如果我在页面上直接插入带有CSS的标签,它会起作用,但这是一个不太理想的解决方案。有没有办法让它加载和解析CSS文件,就好像我在header中使用了标签一样,还是我以某种方式内联了它? 最佳答案 chrome://将无法工作,因为不允许您插入的页面访问其域外的文件(包括chromeURI)。即使您是插入链接的人也是如此,因为链接仍然在目标页面的上下文中执行。相反,您有两个选择:您可以在list中定义资源协议
这个问题在这里已经有了答案:"UncaughtReferenceError:thisisnotdefined"inclassconstructor(1个回答)关闭6年前。以下代码失败:varEventEmitter=require('events');classFooextendsEventEmitter{constructor(){this.name='foo';}print(){this.name='hello';console.log('world');}}varf=newFoo();console.log(f.print());并打印错误this.name='foo';^Ref
我想添加一些功能来跟踪对JavaScript中ActiveX对象方法的某些调用。我通常这样创建我的activeX对象:vartconn=newActiveXObject("Tconnector");每次在tconn和该activeX控件的所有其他实例上调用open方法时,我都需要记录。我无法修改tconn的原型(prototype),因为它没有原型(prototype)!我认为我可以创建一个虚拟ActiveXObject函数,它创建一个代理对象来代理对真实对象的调用。你能帮我做吗?注意:编写直接包装器是不可能的,因为在应用程序中已经有数千次对此activeX的调用。
除了从浏览器本身清除之外,如何使用JavaScript或Java清除浏览器(IE、Firefox、Opera、Chrome)历史记录? 最佳答案 脚本通常无法访问浏览器中的document.location数据,因为允许访问将使任何给定站点能够访问您的整个浏览历史记录。最多你可以做一些简单的操作,比如“转到历史条目#37”或“返回一页”。但是您不能执行“历史条目#23中页面的地址是什么”。大多数银行网站将使用javascript链接来防止建立点击历史记录。他们会执行document.location.replace”来杀死最后一个历
使用Backbone.View.extend我创建了一个名为MyView的主干View。在我看来,我已经创建了一堆自定义函数。我遇到的问题是我需要创建一个扩展MyView的新BackboneView。我不想创建一个新的View和重复的代码...我只是想利用继承来扩展功能...问题是我不知道该怎么做,我也不知道'知道如何调用Backbone中的super函数。*编辑-感谢下面一些人的回答,但仍然不太确定如何调用父方法。例如://insubView{initialize:function(){//wouldliketodosomethinglikesuper.initialize()//h
据我所知,直接获取tab.url是不可能的(只能在popup.html中实现)并且进行消息传递也需要打开popup.html。无论如何绕过这个并从background.html获取当前页面url?我最擅长的是消息传递,我在background.html中使用了这段代码varbg=chrome.extension.getPopupPage();varmyURL=bg.myURL;然后在popup.html中我有:chrome.tabs.getSelected(null,function(tab){varmyURL=tab.url;})无论如何,以上根本不起作用。有人知道无需实际打开弹出窗
我创建了一个基本的extensionforGoogleChrome更改关闭选项卡时选择哪个选项卡的行为,以便所选选项卡是您选择的最后一个选项卡,而不仅仅是关闭选项卡之前的选项卡。我想添加键盘快捷键,我找到了一种使用jquery和jqueryhotkeys来实现的方法,但我发现的问题是键盘快捷键仅在页面加载后才有效。因此,例如,如果您打开一个新选项卡而不去任何地方,则快捷键不起作用,因为javascript仅在屏幕上显示页面时加载。如果您在选项卡中打开扩展页面,也会出现同样的问题。有人知道在Chrome扩展程序中使用键盘快捷键的更好方法吗?我一直在浏览extensionsdocument